/*
 * @Author: zhangyang
 * @Date: 2021-02-24 11:28:17
 * @LastEditTime: 2022-12-19 16:53:40
 * @Description: 项目入口文件
 */
// polyfill
import 'core-js/stable';
import 'regenerator-runtime/runtime';

import { useUserStore } from './store/useUserStore';
// 引入 windicss 的样式
// 不引入 windi-base 是为了防止影响现有的样式，引入另外的两个是保证 windicss 可以正常使用
// import 'virtual:windi-base.css';
import 'virtual:windi-components.css';
import 'virtual:windi-utilities.css';
// to be fix 打包之后样式异常
import 'element-plus/dist/index.css?inline';
//  引入弹框相关的样式(auto-import 只能识别 api，auto-component 只能识别 <tag />)
// import 'element-plus/theme-chalk/el-message.css?inline';
// import 'element-plus/theme-chalk/el-message-box.css?inline';
// 引入 VueRouter
import Router, { routes } from './route/index';
// 引入路由导航守卫

// 统一浏览器样式
import 'normalize.css/normalize.css?inline';
// 自定义样式
import '@/styles/index.scss';

import { createApp } from 'vue';
import App from './App.vue';
import { createPinia, storeToRefs } from 'pinia';

// 引入 console.log 美化
// import './assets/js/console-butifull';

// 创建应用实例
const app = createApp(App);
// pinia
const pinia = createPinia();
app.use(pinia);
// 使用路由
app.use(Router);
// 批量安装模块
Object.values(import.meta.glob<{ install: Function }>('./modules/*.ts', { eager: true })).map(
  ({ install }) => install(app),
);

// 初始化路由表
const { AllRoutes } = storeToRefs(useUserStore());
AllRoutes.value = deepClone(routes);

// 挂载应用
app.mount('#app');
